package practica7;

import java.io.*;

import org.antlr.*;
import org.antlr.runtime.ANTLRFileStream;
import org.antlr.runtime.CharStream;
import org.antlr.runtime.CommonTokenStream;
import org.antlr.runtime.RecognitionException;



public class Procesador 
{
	public static void main(String args[]) throws IOException, RecognitionException {
		try {
			CharStream cs = new ANTLRFileStream("EjemploYACC");
			CommonTokenStream tokens = new CommonTokenStream();
	        
			YACCLexer analex = new YACCLexer(cs);
	        tokens.setTokenSource(analex);
//	        System.out.println(tokens);
	        System.out.println("Analisis léxico finalizado.");
	        YACCParser anasint = new YACCParser(tokens);
	        anasint.entrada();
	        System.out.println("Analisis sintáctico finalizado.");
	        for (int i = 0; i < analex.getPalabrasReservadas().size(); i++) {
	        	System.out.println("Palabra reservada: " + analex.getPalabrasReservadas().get(i).getNombre() + "    " + analex.getPalabrasReservadas().get(i).getContador() + " veces");
	        }
	        
	        int contador = analex.getContadorBloque();
	        if (contador == 0)
	        	System.out.println("No existen errores de bloque.");
	        else if (contador < 0)
	        	System.out.println("ERROR en cierre de bloque.");
	        else if (contador > 0)
	        	System.out.println("ERROR en apertura de bloque.");
		}
		catch(IOException ioe) {
			System.err.println(ioe.getMessage());
		}
	}
}
